#include<iostream>
using namespace std;
int n, t;
const int N = 200;
int x[N], w[N], v[N];
int f[N];
int main()
{
    cin >> n >> t;
    for (int i = 1;i <= n;i++)
    {
        cin >> x[i] >> w[i] >> v[i];
    }
    //多重背包模板
    for (int i = 1;i <= n;i++)
    {
        for (int j=t;j>=0;j--)//注意必须从右往左因为得用左边的更新过的
        {
            //对于每一个物品都有x[i]中选择
            for (int p = 0;p <= x[i]&&j - p * w[i]>=0;p++)//要保证j - p * w[i]大于0
            {
                f[j] = max(f[j], f[j - p * w[i]] + p*v[i]);//注意加背包的时候要加p*v[i]
            }
        }
    }
    cout << f[t] << endl;
    return 0;
}